package concursos.controladores;

import javax.faces.application.NavigationHandler;
import javax.faces.context.FacesContext;
import javax.faces.event.PhaseEvent;
import javax.faces.event.PhaseId;
import javax.faces.event.PhaseListener;
import javax.servlet.http.HttpSession;

/**
 * Metodo responsavel por validar o login do usuário no sistema.
 * 
 * @author Felipe
 * @author Nayane
 * @author Rafael
 * 
 */
public class AutorizacaoListener implements PhaseListener {

	private static final long serialVersionUID = -3525728099476761764L;

	/**
	 * Método responsável por realizar a validação. Se o usuário acessar uma
	 * página sem estar logado, será redirecionado para a pagina index.xhtml.
	 */
	@Override
	public void afterPhase(PhaseEvent arg0) {
		FacesContext facesContext = arg0.getFacesContext();
		String currentPage = facesContext.getViewRoot().getViewId();

		boolean isLoginPage = (currentPage.lastIndexOf("index.xhtml") > -1);
		HttpSession session = (HttpSession) facesContext.getExternalContext()
				.getSession(true);
		Object currentUser = session.getAttribute("usuario");

		if (!isLoginPage && currentUser == null) {
			NavigationHandler nh = facesContext.getApplication()
					.getNavigationHandler();
			nh.handleNavigation(facesContext, null, "loginPage");
		}
	}

	@Override
	public void beforePhase(PhaseEvent arg0) {
		// TODO Auto-generated method stub

	}

	@Override
	public PhaseId getPhaseId() {
		return PhaseId.RESTORE_VIEW;
	}

}
